/*! \file abstractnode.h
	\author tsvetkov_ii

	Defines an message node
*/

#pragma once
#include<stdio.h>
#include <vector>
#include "abstractnode.h"
#include "expr.h"
#include "id.h"

class Message: public AbstractNode
{
private:
	std::vector<Id *> names;
	std::vector<class AbstractNode *> params;
	class AbstractNode * c_operand;


public:

	Message(class AbstractNode * operand, Id * name);

	Message(class AbstractNode * operand, Id * name, class AbstractNode * param);

	void add(Id * name, class AbstractNode * param);

	void write(GraphStream * s);
	
	//! Destructor
	~Message();
};
